Wacko Images
[crypto]
Wacko Images
How to make hiding stuff a e s t h e t i c? And can you make it normal again?
- File #1: actf2020-wacko-enc.png
- File #2: actf2020-wacko-enc.py
Recon
We got an encrypted image and a source file how the image was created.
...
key = [41, 37, 23]
a, b, c = img.shape
for x in range (0, a):
for y in range (0, b):
pixel = img[x, y]
for i in range(0,3):
pixel[i] = pixel[i] * key[i] % 251
img[x][y] = pixel
...
We see that every color of a pixel is multiplied by a key and the remainder when divided by 251 is saved as new value. Since we use a remainder value it is a bit of guess work what the original value should be.
In the end we ended up with this code, which gives us an image which shows some outlines of a flag.
Code
from numpy import *
from PIL import Image
flag = Image.open(r"enc.png")
img = array(flag)
key = [41, 37, 23]
a, b, c = img.shape
for x in range (0, a):
for y in range (0, b):
pixel = img[x, y]
for i in range(0,3):
pixel[i] = (251* pixel[i] + pixel[i]) / key[i]
img[x][y] = pixel
enc = Image.fromarray(img)
enc.save('flag.png')
Flag
actf{m0dd1ng_sk1llz}